import { useUserStore } from '@/store/modules/user.ts'


export default {
  /*inserted 钩子被移除，取而代之的是使用 mounted*/
  /*el: 表示指令绑定的元素，它是一个 DOM 元素。
      binding: 是一个对象，包含指令的信息和值。可以通过 binding.value 获取指令的绑定值。
      vnode: 表示 Vue 编译生成的虚拟节点 (Virtual DOM Node)。在指令钩子函数中，可以通过 vnode 获取更多有关虚拟节点的信息。
     */
  mounted(el: any, binding: any, vnode: any) {
    /*将binding.value中的值取出来，是数组*/
    /*也就是说判断获取的权限信息permission中是否有对应的值*/
    const userStore = useUserStore()
    const { value } = binding
    const permissions = userStore && userStore.permissions
    const all_permission = '*:*:*' /*定义超级权限*/
    if (value && value instanceof Array && value.length > 0) {
      /*判断权限*/
      const hasPermissions = permissions.some((permission) => {
        /*判断value中是否有permission*/
        return all_permission === permission || value.includes(permission)
      })

      /*没有权限*/
      if (!hasPermissions) {
        /*将元素进行移除*/
        el.parentNode && el.parentNode.removeChild(el)
      }
    } else {
      throw new Error('请设置操作权限标签值')
    }
  },
}
